package cn.cailin.day07.demo13ObjectOtoutStrean;

import java.io.*;

/*
    java.io.ObjectInputStream extends InputStream
    ObjectInputStream:对象反序列化流
    作用:把文件中保存的对象，以流的方式读取出来使用

    构造方法:
        ObjectInputStream(InputStream in)创建从指定InputStream读取的ObjectInputStream
        参数：
            InputStream in:字节输入流
    特有的成员方法：
        Object readObject()从ObjectInputStream读取对象
    使用步骤:
        1.创建ObjectInputStream对象，构造方法中传递字节输入流
        2.使用ObjectInputStream对象中的方法readObject读取保存对象的文件
        3.释放资源
        4.使用读取出来的对象（打印）
    readObject方法声明抛出ClassNotFoundException(class文件找不到异常）
    当不存在对象的class文件时抛出此异常
    反序列化的前提：
        1.类必须实现Serializable
        2.必须存在类对应的class文件
 */
public class Demo02ObjectInputStream {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        ObjectInputStream ois=new ObjectInputStream(new FileInputStream("D:\\IDEA\\day05-code\\src\\cn\\cailin\\day07\\Person.txt"));
        Object o = ois.readObject();
        ois.close();
        System.out.println(o);
        Person o1 = (Person) o;
        System.out.println(o1.getName()+o1.getAge());
    }
}
